#pragma once
#ifndef _Include_Player_h_
#define _Include_Player_h_

class ChessPiece;
class ChessBoard;

class Player
{
public:
    Player() {}
    Player(int type_name) : m_type_name(type_name), m_is_turn(FALSE) {}
    ~Player() {}

public:
    HRESULT Initialize(const std::shared_ptr<ChessBoard>& chess_board);
    HRESULT SetTurn(BOOL is_turn);
    HRESULT GetTurn(BOOL& is_turn) const;
    HRESULT SetAllPieces(std::vector<ChessPiece*> vec_pieces);
    HRESULT GetAllPieces(std::vector<ChessPiece*>& vec_pieces) const;
    HRESULT IsSelectPieces(BOOL& is_select);
    HRESULT SetNoSelectPieces();

private:
    int m_type_name;
    BOOL m_is_turn;
    BOOL m_is_select;
    std::vector<ChessPiece*> m_vec_pieces;
    std::shared_ptr<ChessBoard> m_chess_board;
};
typedef std::unique_ptr<Player> LPPlayer;

#endif//_Include_Player_h_